home *** CD-ROM | disk | FTP | other *** search
/ ftp.cs.arizona.edu / ftp.cs.arizona.edu.tar / ftp.cs.arizona.edu / icon / newsgrp / group94a.txt / 000057_icon-group-sender _Mon Feb 21 00:30:21 1994.msg < prev    next >
Internet Message Format  |  1994-08-19  |  1KB

  1. Received: by cheltenham.cs.arizona.edu; Mon, 21 Feb 1994 09:17:08 MST
  2. Return-Path: <jeffery@ringer.cs.utsa.edu>
  3. Date: Mon, 21 Feb 94 00:30:21 CST
  4. From: jeffery@ringer.cs.utsa.edu (Clinton L. Jeffery)
  5. Message-Id: <9402210630.AA27481@ringer.cs.utsa.edu.sunset>
  6. To: pab@cs.arizona.edu
  7. Cc: icon-group@cs.arizona.edu
  8. In-Reply-To: Peter A. Bigot's message of Sun, 20 Feb 1994 18:29:49 -0700 (MST) <9402210129.AA26505@omnia.cs.arizona.edu>
  9. Subject: generating both [lr]values of records
  10. Status: R
  11. Errors-To: icon-group-errors@cs.arizona.edu
  12.  
  13.     Peter Bigot writes about record lvalues:
  14.     # What I'd like:
  15.     # every !ar := (¤tgenelt)+1
  16.     # but for some reason that doesn't work....
  17.  
  18. Peter, !r does generate assignable references to record r's fields, but its
  19. easy to inadvertently get yourself in trouble in the surrounding expression
  20. (the usual mistake is to try to assign each field different results from a
  21. generator; you need a co-expression for parallel evaluation of generators).
  22. Anyhow, check out the following program, which assigns new values to a
  23. record's fields (it writes out 1, 2, 3, and 4 on separate lines).
  24.  
  25. record r(a,b,c,d)
  26.  
  27. procedure main()
  28.    r1 := r()
  29.    every !r1 := foobar()
  30.    every write(!r1)
  31. end
  32.  
  33. procedure foobar()
  34.    static i
  35.    initial i := 0
  36.    return i +:= 1
  37. end
  38.  
  39. Clint Jeffery
  40. cjeffery@cs.arizona.edu, jeffery@ringer.cs.utsa.edu
  41. The University of Texas at San Antonio
  42.  
  43.